package org.maurange.formation.licpro;


import java.util.ArrayList;

import org.maurange.formation.licpro.rest.ArretDetails;
import org.maurange.formation.licpro.rest.ArretDetailsMethode;
import org.maurange.formation.licpro.rest.ListArretDetails;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.app.ListActivity;
import android.view.Menu;

public class ArretDetailsActivity extends ListActivity { // On étends de listActivty, on va stocker les différents layout dans une liste

	private CallWebServAssyncTaskDetails task;
	private String code_lieu;
	private ArretAdapterDetails arretAdapter;
	
	
	/**
	 * Méthode appellé quand l'appareil tourne, il retourne la tache en cours
	 */
	public Object onRetainNonConfigurationInstance() {
		if (!task.getStatus().equals(AsyncTask.Status.FINISHED))
		{
			task.detach();
			return task;
		}
		else
		{
			return null;
		}
	}
	
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		arretAdapter = new ArretAdapterDetails(this, new ArrayList<ArretDetails>());
		setListAdapter(arretAdapter);
		Bundle recupInfos = getIntent().getExtras();
		this.code_lieu = recupInfos.getString("code");

	}

	
	protected void onResume()
	{
		super.onResume();
		task = (CallWebServAssyncTaskDetails) getLastNonConfigurationInstance(); //On récupere la tache en cours
		if (task != null) {
			task.attach(this);
		}
		else{
			this.task = new CallWebServAssyncTaskDetails(ArretDetailsActivity.this);
			this.task.execute(code_lieu);
		}
	}



	/**
	 * Classe qui va aller chercher les différentes informations , le temps d'attente pour un arret spécifique
	 * @author E105191N
	 *
	 */
	private static class CallWebServAssyncTaskDetails extends
	AsyncTask<String, Void, ListArretDetails> {
		private Activity activity;

		public CallWebServAssyncTaskDetails(Activity act) {
			activity = act;
		}

		/**
		 * @param Le code lieu concernant l'arret
		 * @return la liste correspondante
		 */
		@Override
		protected ListArretDetails doInBackground(String... arg0) {
			ArretDetailsMethode arr = new ArretDetailsMethode(activity);
			return arr.getArretsRest(arg0[0]); 
		}
		
		/**
		 * @param la liste retournée par le doInBackground
		 */
		protected void onPostExecute(ListArretDetails list) {
			try {
				((ArretDetailsActivity) activity).getArretAdapter().getListArret().clear();
			} catch (Exception e) {
				
			}
			((ArretDetailsActivity) activity).getArretAdapter().getListArret().addAll(list);  //On ajoute tous les temps d'attente
			((ArretDetailsActivity) activity).getArretAdapter().notifyDataSetChanged(); // On indique que le status a changer
		}

		
		public void attach(Activity act) {
			this.activity = act;
		}

		public void detach() {
			this.activity = null;
		}

		

	}




	public ArretAdapterDetails getArretAdapter() {
		return arretAdapter;
	}

	public void setArretAdapter(ArretAdapterDetails arretAdapter) {
		this.arretAdapter = arretAdapter;
	}
	
	

}
